// const BASEURL = 'http://192.168.0.90:8091';
const BASEURL = 'https://ts.cciictop.com/prod-api';


/*
 * 全局请求封装
 * @param path 请求路径
 * @param method 请求类型(GET/POST/DELETE等)
 * @param data 请求体数据
 * @param loading 请求未完成是是否显示加载中，默认为true
 * @param needToken 是否需要token，默认为true
 */
export default function request(options) {
	const {
		url,
		data,
        method = 'get',
        timeout = 60000,
		needToken = true // 新增参数，默认需要token
	} = options;
	// 获取存储token
	const token = uni.getStorageSync("token");

	return new Promise((resolve, reject) => {
		// 检查token是否存在（只有需要token时才检查）
		if (needToken && !token) {
			let pages = getCurrentPages();
			let route = pages[pages.length - 1].route
			if (route === 'pages/index/index') {
				uni.reLaunch({
					url: '/pages/login/index'
				});
				// 中断请求
				reject()
			} else {
				uni.reLaunch({
					url: '/pages/login/index'
				});
				// 中断请求
				// reject()
			}
			return
		};

		// 显示加载提示
		// uni.showLoading({
		// 	title: "加载中",
		// 	mask: true
		// });
		// 构建完整的URL
		const fullUrl = BASEURL + url;

		uni.request({
			url: fullUrl,
			data,
            method,
            timeout:timeout,
			header: {
				'Content-Type': 'application/json',
				// 只有需要token时才添加Authorization头
				...(needToken ? {
					'Authorization': token
				} : {}),
				'Access-Control-Allow-Origin': '*'
			},
			success: res => {
				// 隐藏加载提示
				// uni.hideLoading();
                
				// 如果请求成功，则 resolve 响应数据
				if (res.statusCode === 200) {
					resolve(res.data)
				} else {
					uni.showToast({
						title: res.data.msg || '请求失败',
						icon: 'none',
						duration: 2000
					})
					// 否则 reject 错误信息
					reject({
						code: res.statusCode,
						msg: res.data.msg,
					})
                }
					if (res.data.code == 401) {
						uni.reLaunch({
							url: '/pages/login/index'
						});
					}
			},
            fail: err => {
                uni.showToast({
                    title: err.errMsg || '请求超时，请检查网络连接',
                    icon: 'none'
                });

				// 隐藏加载提示
				uni.hideLoading();

				// 处理请求失败时的错误信息
				uni.showToast({
					title: '网络请求失败',
					icon: 'none',
					duration: 2000
				});
				reject({
					code: 500,
					msg: err.errMsg || '请求失败'
				})
			}
		})
	}).catch(error => {
		uni.hideLoading();
		uni.showToast({
			title: error.msg || '请求失败',
			icon: 'none',
			duration: 2000
		});
	})
}

export {
	BASEURL
}